package redecolaborativa.client;

import java.util.List;
import com.google.gwt.user.client.rpc.AsyncCallback;

public interface FachadaAsync {
	void cadastrarUsuario(String nome, String endereco, String login, String senha, AsyncCallback<Void> callback)  throws Exception;
	void abrirSessao(String login, String senha, AsyncCallback<String> callback) throws Exception;
	void localizarUsuario(String idSessao, String chave, String atributo, AsyncCallback<String> callback);
	void getSessao(String login, AsyncCallback<Integer> callback);
	void cadastrarItem(String login, String nome, String categoria, String descricao, AsyncCallback<Void> callback) throws Exception;
	void getCategorias(AsyncCallback<List<String>> callback);
	void pesquisaItens(String idSessao, String chave, String atributo, String tipoOrdenacao, String criterio, AsyncCallback<List<String>> callback) throws Exception;
	void getItem(String idSessao, String nome, AsyncCallback<String> callback);
	void pedirEmprestado(String idSessao, String nome, int tempoPrevisto, AsyncCallback<Void> callback) throws Exception;
	void historicoIndividual(String idSessao, AsyncCallback<String> callback);
	void requisitarAmizade(String idSessao, String login, AsyncCallback<Void> callback) throws Exception;
	void apareceBotao(String usuario, String outroUsuario, AsyncCallback<Boolean> callback);
	void historicoConjunto(String idSessao, AsyncCallback<String> callback);
	void aprovarAmizade(String idSessao, String login, AsyncCallback<Void> callback) throws Exception;
	void rejeitarAmizade(String idSessao, String login, AsyncCallback<Void> callback) throws Exception;
	void getSolicitacoesDeAmizade(String  idSessao, AsyncCallback<List<String>> callback);
	void getAmigos(String idSessao, String loginOutro, AsyncCallback<List<String>> callback) throws Exception;
	void getRequisicoesDeitem(String idSessao, AsyncCallback<List<String>> callback) throws Exception;
	void aprovarEmprestimo(String idSessao, String idRequisicaoEmprestimo, AsyncCallback<Void> callback) throws Exception;
	void rejeitarEmprestimo(String idSessao, String idRequisicaoEmprestimo, AsyncCallback<Void> callback) throws Exception;
	void getRequisicoesDeDevolucao(String idSessao,	AsyncCallback<List<String>> callback);
	void getItensEmprestados(String idSessao, AsyncCallback<List<String>> callback);
	void requisitarDevolucao(String idSessao, String idEmprestimo, AsyncCallback<Void> callback) throws Exception;
	void getItens(String idSessao, AsyncCallback<List<String>> callback);
	void devolverItem(String idSessao, int idEmprestimo, AsyncCallback<Void> callback) throws Exception;
	void getIdEmprestimo(String idSessao, String nomeItem, AsyncCallback<Integer> callback);
	void avaliarItem(String idSessao, String nomeItem, float nota, AsyncCallback<Void> callback);
	void getItensAdquiridos(String idSessao, AsyncCallback<List<String>> callback);
}
